# !/usr/bin/env python
# -*- coding: utf-8 -*-
# ///////////////////////////////////////////////////////////////
# @File    :   getImageBaseData.py
# @Time    :   2024/08/21 14:39:56
# @Author  :   kai.luo
# @Version :   1.0.0
# @Desc    :   获取医疗图片中检查项目的公共库
# ///////////////////////////////////////////////////////////////

import re
from moudles.Common.common import *
from moudles.MedicalReportForm.commonLibrary.common import *
from moudles.MedicalReportForm.commonLibrary.getImageMainData import MainInfo


class SichuanMainInfo(object):
    """
    项目,结果,单位,参考区间,提示
    Args:
        object (_type_): _description_
    """

    def __init__(self, **kwarg) -> None:
        # 初始化公共头部库
        self.comonMainInfo = MainInfo()

    def parserSichuanMainTitle(self, data):
        """
        有效列的下标
        Args:
            data (_type_): _description_
        """
        # print(f'parserSichuanMainTitle---{data}')
        # 获取有效的标题所在X轴的排序
        display_col_index_list = self.comonMainInfo.parserMainTitleIndex(data)

        return display_col_index_list

    def parserSichuanMainContexts(self, display_col_index_list: list, data: list):
        """
        针对四川的检验报告
        Args:
            data (_type_): _description_
        """
        # print(f'parserMainContexts---{data}')

        # 纠正无意义的符号参杂在一行列表中
        fixed_data = fixedLineList(data)

        # 将每一行的数据统计在一起,获取最大行
        all_line_data_list = self.comonMainInfo.getMainLineData(fixed_data)

        # 每一行数据中，每项末尾坐标X与相邻参数数据坐标太近，默认是同一个参数
        max_len, fixed_all_line_data_list = self.comonMainInfo.fixedLinePosxData(all_line_data_list)

        # 根据x轴的大小对每一行数据进行排序，防止一行中的数据乱排序
        sortx_line_data = sortedLineData(fixed_all_line_data_list)

        # 随机抽查最大行的数据
        max_line_posx_list = getMaxLineList(max_len, sortx_line_data)

        # 对项目每一行的数据进行查缺补漏
        mainLines = self.comonMainInfo.getMainLineList(max_len, max_line_posx_list, sortx_line_data)

        # 过滤需要展示的列的列表
        mainContextsList = self.comonMainInfo.filterMainDisplayEntrys(display_col_index_list, mainLines)
        # print(f'self.main_title_indx_list---{self.main_title_indx_list}')
        # print(f'mainContextsList---{mainContextsList}')

        # 将无标题的行去掉
        mainEffectiveContextsList = self.comonMainInfo.filterEffectiveLines(mainContextsList)

        # 根据每行数据，得出检验结果
        mainEntrysContexts = self.comonMainInfo.mainResultEntrys(mainEffectiveContextsList)
        # print(f'mainEntrysContexts---{mainEntrysContexts}')
        return mainEntrysContexts
